package br.com.virtual.vender.model;

import java.math.BigDecimal;

import br.com.virtual.correio.enums.TipoFrete;

public class Frete {
	
	
	BigDecimal valor;
	Integer prazoEntrega;
	TipoFrete tipoFrete;
	
	public Frete(TipoFrete tipoFrete){
		setValor(new BigDecimal(0));
		setPrazoEntrega(0);
		setTipoFrete(tipoFrete);
	}
	
	public Frete(BigDecimal valor, Integer prazoEntrega, TipoFrete tipoFrete){
	
		setValor(valor);
		setPrazoEntrega(prazoEntrega);
		setTipoFrete(tipoFrete);
	}
	
	public Frete(String valor, String prazoEntrega, TipoFrete tipoFrete){
		
		BigDecimal valorDec = new BigDecimal(valor.replace(',', '.'));
		Integer prazoInt = new Integer(prazoEntrega);
		
		setValor(valorDec);
		setPrazoEntrega(prazoInt);
		setTipoFrete(tipoFrete);
		
	}

	public void addFrete(BigDecimal valor){
		
		setValor(valor.add(getValor()));
	}
	
	public void addFrete(BigDecimal valor, Integer quantidadeMultiplicar){
		
		BigDecimal valorTotal =  valor.multiply( new BigDecimal( quantidadeMultiplicar ));
		setValor( valorTotal.add(getValor()) );
	}

	public BigDecimal getValor() {
		return valor;
	}

	public void setValor(BigDecimal valor) {
		this.valor = valor;
	}

	public Integer getPrazoEntrega() {
		return prazoEntrega;
	}

	public void setPrazoEntrega(Integer prazoEntrega) {
		this.prazoEntrega = prazoEntrega;
	}
	
	public TipoFrete getTipoFrete() {
		return tipoFrete;
	}
	
	public void setTipoFrete(TipoFrete tipoFrete) {
		this.tipoFrete = tipoFrete;
	}

	@Override
	public String toString() {
		return "Frete [valor=" + valor + ", prazoEntrega=" + prazoEntrega
				+ ", tipoFrete=" + tipoFrete + "]";
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result
				+ ((prazoEntrega == null) ? 0 : prazoEntrega.hashCode());
		result = prime * result
				+ ((tipoFrete == null) ? 0 : tipoFrete.hashCode());
		result = prime * result + ((valor == null) ? 0 : valor.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Frete other = (Frete) obj;
		if (prazoEntrega == null) {
			if (other.prazoEntrega != null)
				return false;
		} else if (!prazoEntrega.equals(other.prazoEntrega))
			return false;
		if (tipoFrete != other.tipoFrete)
			return false;
		if (valor == null) {
			if (other.valor != null)
				return false;
		} else if (!valor.equals(other.valor))
			return false;
		return true;
	}

}
